from django.db import models

#模型类的扩展 》》管理器Manager
class BookInfoManager(models.Manager):
    #1.修改原始查询集，重写all()方法
    def all(self):
        #默认查询未删除的图书信息
        #调用父类的成员语法为：super().方法名
        return super().all().filter(isDelete=False)
    #2.向管理器类中添加额外的方法，如向数据库中插入数据。
    # 创建模型类，接收参数为属性赋值
    def create_book(self, title, pub_date):
        # 创建模型类对象self.model可以获得模型类
        book = self.model()
        book.btitle = title
        book.bpub_date = pub_date
        book.bread = 0
        book.bcommet = 0
        book.isDelete = False
        # 将数据插入进数据表
        book.save()
        return book

#定义用户类User
class User(models.Model):
    uname = models.CharField(max_length=20)#用户名称
    upasssword = models.CharField(max_length=20)#发布日期
    isDelete = models.BooleanField(default=False)#逻辑删除

#定义图书模型类BookInfo
class BookInfo(models.Model):
    btitle = models.CharField(max_length=20)#图书名称
    bpub_date = models.DateField()#发布日期
    bread = models.IntegerField(null=True)#阅读量
    bcomment = models.IntegerField(default=0)#评论量
    isDelete = models.BooleanField(default=False)#逻辑删除
    #books = BookInfoManager()
    '''# 定义元选项
    class Meta:
        db_table = 'bookinfo'  # 指定BookInfo生成的数据表名为bookinfo
    '''

#定义英雄模型类HeroInfo
class HeroInfo(models.Model):
    hname = models.CharField(max_length=20)#英雄姓名
    hgender = models.BooleanField(default=True)#英雄性别
    isDelete = models.BooleanField(default=False)#逻辑删除
    hcomment = models.CharField(max_length=200)#英雄描述信息
    hbook = models.ForeignKey('BookInfo',on_delete=models.CASCADE)#英雄与图书表的关系为一对多，所以属性定义在英雄模型类中

#定义地区模型类，存储省、市、区县信息
class AreaInfo(models.Model):
    atitle=models.CharField(max_length=30)#名称
    aParent=models.ForeignKey('self',on_delete=models.CASCADE,null=True,blank=True)#关系

